package 算法.leetcode.bytedance.字符串;

/**
 * 给定两个以字符串形式表示的非负整数 num1 和 num2，返回 num1 和 num2 的乘积，它们的乘积也表示为字符串形式。
 * @author lchenglong
 * @date 2023/2/14
 */
public class 字符串相乘 {
    public static class Solution {

        public static void main(String[] args) {

        }

        public String multiply(String num1, String num2) {
            // 边界条件
            if ("0".equals(num1)||"0".equals(num2))return "0";
            int l1 = num1.length(),l2 = num2.length();
            int[] res = new int[l1+l2];
            // 采用竖式计算乘法
            for (int i = l1-1;i>=0;i--) {
                int c1 = num1.charAt(i) - 'a';
                for (int j = l2-1;j>=0;j--) {
                    int c2 = num2.charAt(j)-'a';
                    int sum =res[i+j +1]+ c1 * c2;
                    // 计算当前位
                    res[i+j+1] =  sum%10;
                    // 计算进位
                    res[i+j] += sum/10;
                }
            }

            // 计算结果
            StringBuilder ans = new StringBuilder();
            for (int i=0;i<res.length;i++){
                if (i==0&&res[i]==0)continue;
                ans.append(res[i]);
            }
            return ans.toString();

        }
    }
}
